/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import java.sql.Statement;
import InterfazUsuario.Usuario;
import Modelo.ENT_Modulo;
import Modelo.ENT_Permisos;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Isaac Paliza <anndysaac@hotmail.com>
 */
public class Sistema {

    private static ConnectionJDBC connectionJDBC = new ConnectionJDBC();
    private static Statement statement = connectionJDBC.createStatement();

    public static String cargar() throws SQLException {
        List d = cargarModulos();
        String html = "";
        String htmlc = "";
        for (int i = 0; i < d.size(); i++) {
            List<ENT_Modulo> objLista_ENT_Modulo = new ArrayList<ENT_Modulo>();
            objLista_ENT_Modulo = (List<ENT_Modulo>) d.get(i);
            for (int j = 0; j < objLista_ENT_Modulo.size(); j++) {
                if (j == 0) {
                    html = "<li><a href='#'>" + objLista_ENT_Modulo.get(j).getNombreModulo() + "</a>";
                    html += "<ul>";
                }
                if (j != 0) {
                    html += "<li><a href='Sistema?idModulo=" + objLista_ENT_Modulo.get(j).getIdModulo() + "&url=/Vista/" + objLista_ENT_Modulo.get(j).getUrl() + "' target='V_S2'>" + objLista_ENT_Modulo.get(j).getNombreModulo() + "</a></li>";
                }
                if (j == (objLista_ENT_Modulo.size() - 1)) {
                    html += "</ul></li>";
                }
            }
            htmlc += html;
        }
        return htmlc;
    }
    
    public static List cargarPermiso() throws SQLException {
        ArrayList<ENT_Permisos> ListaPermisoUsuario = new ArrayList<ENT_Permisos>();
        String sql = "SELECT idModulo FROM t_permiso "
                + "WHERE idPerfil =" + Usuario.instancia.get(0).getIdPerfil() + " AND top = 0";
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        while (recordingResults.next()) {

            String idModulo = recordingResults.getString(1);
            if (recordingResults.wasNull()) {
                idModulo = "";
            }
            ListaPermisoUsuario.add(new ENT_Permisos(idModulo));
        }
        ArrayList<ENT_Permisos> ListaPermisoUsuario2 = null;
        List lista = new ArrayList();
        if (ListaPermisoUsuario.size() > 0) {
            for (int i = 0; i < ListaPermisoUsuario.size(); i++) {
                ListaPermisoUsuario2 = new ArrayList<ENT_Permisos>();
                String sql2 = "SELECT idModulo FROM t_permiso "
                        + "WHERE top =" + ListaPermisoUsuario.get(i).getIdModulo();
                ResultSet recordingResults2 = ConnectionJDBC.executeQuery(statement, sql2);

                String idModuloIndex = ListaPermisoUsuario.get(i).getIdModulo();
                ListaPermisoUsuario2.add(new ENT_Permisos(idModuloIndex));
                while (recordingResults2.next()) {
                    String idModulo = recordingResults2.getString(1);
                    if (recordingResults2.wasNull()) {
                        idModulo = "";
                    }
                    ListaPermisoUsuario2.add(new ENT_Permisos(idModulo));
                }
                lista.add(ListaPermisoUsuario2);
            }

        }
        return lista;
    }
    public static List cargarModulos() throws SQLException {
        ArrayList<ENT_Modulo> ListaModulosUsuario = null;
        List d = cargarPermiso();
        List lista = new ArrayList();
        for (int i = 0; i < d.size(); i++) {
            List<ENT_Permisos> objLista_ENT_ModuloAux = new ArrayList<ENT_Permisos>();
            objLista_ENT_ModuloAux = (List<ENT_Permisos>) d.get(i);
            ListaModulosUsuario = new ArrayList();
            for (int j = 0; j < objLista_ENT_ModuloAux.size(); j++) {
                String sql = "SELECT * FROM t_modulo "
                        + "WHERE idModulo =" + objLista_ENT_ModuloAux.get(j).getIdModulo();
                ResultSet recordingResults
                        = ConnectionJDBC.executeQuery(statement, sql);
                while (recordingResults.next()) {
                    String idModulo = recordingResults.getString(1);
                    if (recordingResults.wasNull()) {
                        idModulo = "";
                    }
                    String nombreModulo = recordingResults.getString(2);
                    if (recordingResults.wasNull()) {
                        nombreModulo = "";
                    }
                    String url = recordingResults.getString(3);
                    if (recordingResults.wasNull()) {
                        url = "";
                    }
                    ListaModulosUsuario.add(new ENT_Modulo(idModulo, nombreModulo, url));
                }

            }
            lista.add(ListaModulosUsuario);
        }
        return lista;
    }
    public static int GenerarIDTabla(String dato) throws SQLException {
        //SELECT COUNT(*) idAsistencia FROM t_asistencia
        String sql = "SELECT COUNT(*) "+dato;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        int indexPaciente = 0;
        while (recordingResults.next()) {
            if (recordingResults.wasNull()) {
                indexPaciente = 1;
            }
            if (indexPaciente == 0) {
                indexPaciente = recordingResults.getInt(1) + 1;
            }
        }
        return indexPaciente;
    }
    public static String getFechaActualSistema() {
        Date ahora = new Date();
        SimpleDateFormat formateador = new SimpleDateFormat("yyyy-MM-dd");
        return formateador.format(ahora);
    }
    public static String getHoraActualSistema() {
        Date ahora = new Date();
        SimpleDateFormat formateador = new SimpleDateFormat("hh:mm:ss");
        return formateador.format(ahora);
    }
}